Sequelize에서 대소문자 구분 없이 Select하기
✒️ 2025-05-26 15:11 내용 수정
-
참고 자료 : stackoverflow How to use Lowercase function in Sequelize Postgres
-
위의 링크를 참고하여 현재 진행중인 프로젝트에서 대소문자 구분 없이 이름을 조회하기 위한 Sequelize 구문을 작성했다.
-
SQL으로 표현하면 아래와 같이 표현할 수 있다.
SELECT * FROM Music WHERE LOWER(musicName) LIKE LOWER(name) AND userId = userId
- Sequelize로 작성하면
Sequelize.and(A, B)와Sequelize.where(A, {B}),Sequelize.fn('lower', name)형식으로 조건을 줄 수 있다.- 대문자는 lower 대신 upper를 사용한다.
- OR 조건을 준다면
Sequelize.or(A, B)을 사용한다.
// Sequelize와 Op 사용
const { Op, Sequelize } = require("sequelize");
// MySQl에서 Model 객체로 데이터 조회
app.get("/search", async (req, res) => {
musicList= await Music.findAll({
// where 절 시작 WHERE ~
where: Sequelize.and( // and 조건을 걸 영역
Sequelize.where( // 이중으로 설정
Sequelize.fn('lower', Sequelize.col('musicName')), // 소문자로 변환
{[Op.like]:`%${name.toLowerCase()}%`}
// lower(musicName) LIKE lower(name)
),
{userId} // AND userId = userId
)
});
// 데이터를 페이지에 포워딩
res.render("main.ejs", {username, userId, musicList, genreList});
}